WorkManager
WorkManager是一種延遲異步操作的類,即使應用程序退出或設備重新啟動,也可以運行。
WorkManager會根據運行環境自動選擇不同的管理類
API 23 以上:JobScheduler。
API 14 ~ 22:BroadcastReceiver + AlarmManager。
implementation "androidx.work:work-runtime:2.4.0"
class MyWorker(context: Context, workerParameters: WorkerParameters) : Worker(context, workerParameters) {
override fun doWork(): Result {
Log.d("Time", LocalDateTime.now().toString())
return Result.success()
}
}
設置啟動的條件
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED) //網路狀態
// .setRequiresBatteryNotLow(true) //不是低電量
// .setRequiresStorageNotLow(true)//不是低容量
// .setRequiresCharging(true) //充電
.build()
啟動Worker(啟動時機塞給Request 調用WorkManager)
//執行一次
val request = OneTimeWorkRequest.Builder(MyWorker::class.java)
.setConstraints(constraints)
.build()
//執行時間(最低15分鐘)
val request = PeriodicWorkRequest.Builder(MyWorker::class.java, 3, TimeUnit.HOURS)
.setConstraints(constraints)
.build()
WorkManager.getInstance(this).enqueue(request)